using System;

namespace MT5Trade.Models
{
    /// <summary>
    /// 随机数提供器接口
    /// 用于替换System.Random类，支持确定性和可重现的"随机"数生成
    /// </summary>
    public interface IRandomProvider
    {
        /// <summary>
        /// 生成0到1之间的伪随机双精度浮点数
        /// </summary>
        /// <returns>大于等于0且小于1的双精度数</returns>
        double NextDouble();

        /// <summary>
        /// 生成指定范围内的伪随机整数
        /// </summary>
        /// <param name="minValue">包含的下界</param>
        /// <param name="maxValue">不包含的上界</param>
        /// <returns>大于等于minValue且小于maxValue的整数</returns>
        int Next(int minValue, int maxValue);

        /// <summary>
        /// 生成不超过指定值的非负伪随机整数
        /// </summary>
        /// <param name="maxValue">不包含的上界</param>
        /// <returns>大于等于0且小于maxValue的整数</returns>
        int Next(int maxValue);

        /// <summary>
        /// 生成正态分布的伪随机数
        /// </summary>
        /// <param name="mean">均值</param>
        /// <param name="stdDev">标准差</param>
        /// <returns>服从正态分布的随机数</returns>
        double NextGaussian(double mean = 0, double stdDev = 1);
    }
}